home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Mac OS USB DDK / Examples / USBSampleStorageDriver / SampleStorageDriverAPI.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-16  |  3.4 KB  |  129 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SampleStorageDriverAPI.h
  3.  
  4.     Contains:    Sample Storage Class definitions used by the Storage Class UT Driver
  5.  
  6.     Version:    1.1
  7.  
  8.     Copyright:    © 1998-1999 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     File Ownership:
  11.  
  12.         DRI:                Craig Keithley
  13.  
  14.         Other Contact:        xxx put other contact here xxx
  15.  
  16.         Technology:            USB Drivers
  17.  
  18.     Writers:
  19.  
  20.         (TM)    Tim McLeod
  21.         (CJK)    Craig Keithley
  22.  
  23.     Change History (most recent first):
  24.  
  25.       <USB3>     2/16/99    TM        Add error code for class not configured.
  26.       <USB2>     1/11/99    CJK        update to use sources from 1.1f3 DDK
  27.  
  28. */
  29.  
  30. #ifndef __SAMPLESTORAGEDRIVERAPI__
  31. #define __SAMPLESTORAGEDRIVERAPI__
  32.  
  33. #include <MacTypes.h>
  34.  
  35. #define kDispatchTableVersion        0
  36.  
  37. // Return codes from the class driver
  38. enum
  39. {
  40.     kCommandBusyError =  -10000,
  41.     kClassNotConfiguredErr,
  42.     kRequestPending = 1
  43. };
  44.  
  45.  
  46. enum ControlSelectors
  47. {
  48.     kControlDisableRemoval =    0,
  49.     kControlEnableRemoval
  50. };
  51.  
  52. enum StatusSelectors
  53. {
  54.     kStatusConfiguration =        0,
  55.     kStatusDeviceStatus,
  56.     kStatusRemovalStatus
  57. };
  58.  
  59. enum driverConfigurationStatus
  60. {
  61.     kNotConfigured =            0,
  62.     kConfigureInProgress,
  63.     kConfigureComplete,
  64.     kConfigureFailed
  65. };
  66.  
  67.  
  68. #define kCDBSize                    12        // Per the USB Mass Storage Class spec.
  69.  
  70. typedef CALLBACK_API_C( void , StorageClassCompletionProcPtr )(void* storageClassPBPtr );
  71.  
  72.  
  73. struct StorageStatusPB {
  74.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  75.     UInt8                            deviceStatus[2];            // <- Two bytes of status
  76.     OSStatus                        status;                // <- Result of operation
  77. };
  78. typedef struct StorageStatusPB    StorageStatusPB;
  79. typedef StorageStatusPB *        StorageStatusPBPtr;
  80.  
  81.  
  82. struct StorageControlPB {
  83.     UInt32                            selector;            // -> Operation to perform
  84.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  85.     OSStatus                        status;                // <- Result of operation
  86. };
  87. typedef struct StorageControlPB    StorageControlPB;
  88. typedef StorageControlPB *        StorageControlPBPtr;
  89.  
  90.  
  91. struct StorageExecuteCommandPB {
  92.     UInt8                            cdb[kCDBSize];        // -> CDB to send to device
  93.     UInt32                            flags;                // -> Data transfer flags (See below)
  94.     Ptr                                userBuffer;            // -> Pointer to user buffer
  95.     UInt32                            expectedCount;        // -> Expected number of bytes to transfer
  96.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  97.     UInt32                            actualCount;        // <- Actual number of bytes transferred
  98.     OSStatus                        status;                // <- Result of operation
  99. };
  100. typedef struct StorageExecuteCommandPB    StorageExecuteCommandPB;
  101. typedef StorageExecuteCommandPB *        StorageExecuteCommandPBPtr;
  102.  
  103. // Data transfer flags for StorageExecuteCommandPB
  104. enum {
  105.     kStorageDataIn    =    0x0001,
  106.     kStorageDataOut =    0x0002,
  107.     kStorageNoData =    0x0004
  108. };
  109.  
  110. typedef CALLBACK_API_C( OSStatus , StorageInitializeProcPtr )(void);
  111.  
  112. typedef CALLBACK_API_C( OSStatus , StorageControlProcPtr )(UInt32 theControlSelector, void *theControlData);
  113.  
  114. typedef CALLBACK_API_C( OSStatus , StorageStatusProcPtr )(UInt32 theInfoSelector, void *theInfo);
  115.  
  116. typedef CALLBACK_API_C( OSStatus , StorageExecuteCommandProcPtr )(void* storageExecuteCommandPBPtr );
  117.  
  118.  
  119. struct StorageClassDispatchTable {
  120.     UInt32                            dispatchTableVersion;
  121.     StorageInitializeProcPtr         pStorageInitialize;
  122.     StorageControlProcPtr             pStorageControl;
  123.     StorageStatusProcPtr             pStorageStatus;
  124.     StorageExecuteCommandProcPtr    pStorageExecuteCmd;
  125. };
  126. typedef struct StorageClassDispatchTable    StorageClassDispatchTable;
  127. typedef StorageClassDispatchTable *            StorageClassDispatchTablePtr;
  128.  
  129. #endif /* __SAMPLESTORAGEDRIVERAPI__ */